2,000 research outputs found
Consistency types for replicated data in a higher-order distributed programming language
Distributed systems address the increasing demand for fast access to
resources and fault tolerance for data. However, due to scalability
requirements, software developers need to trade consistency for performance.
For certain data, consistency guarantees may be weakened if application
correctness is unaffected. In contrast, data flow from data with weak
consistency to data with strong consistency requirements is problematic, since
application correctness may be broken. In this paper, we propose lattice-based
consistency types for replicated data (CTRD), a higher-order static
consistency-typed language with replicated data types. The type system of CTRD
supports shared data among multiple clients, and statically enforces
noninterference between data types with weaker consistency and data types with
stronger consistency. The language can be applied to many distributed
applications and guarantees that updates of weakly-consistent data can never
affect strongly-consistent data. We also extend the basic CTRD with an
optimization that reduces synchronization for generating reference graphs
Capabilities for External Uniqueness
Unique object references have many important applications in object-oriented programming. For instance, with sufficient encapsulation properties they enable safe and efficient transfer of message objects between concurrent processes. However, it is a long-standing challenge to integrate unique references into practical object-oriented programming languages. This paper introduces a new approach to external uniqueness. The idea is to use capabilities for enforcing both aliasing constraints that guarantee external uniqueness, and linear consumption of unique references. We formalize our approach as a type system, and prove a type preservation theorem. Type safety rests on an alias invariant that builds on a novel formalization of external uniqueness. We show how a capability-based type system can be used to integrate external uniqueness into widely available object- oriented programming languages. Practical experience suggests that our system allows adding uniqueness information to common collection classes in a simple and concise way
Spores, Formally
Functional programming (FP) is regularly touted as the way forward for bringing parallel, concurrent, and distributed programming to the mainstream. The popularity of the rationale behind this viewpoint (immutable data transformed by function application) has even lead to a number of object-oriented (OO) programming languages adopting functional features such as lambdas (functions) and thereby function closures. However, despite this established viewpoint of FP as an enabler, reliably distributing function closures over a network, or using them in concurrent environments nonetheless remains a challenge across FP and OO languages. This paper takes a step towards more principled distributed and concurrent programming by introducing a new closure-like abstraction and type system, called spores, that can guarantee closures to be serializable, thread-safe, or even have general, custom user-defined properties. Crucially, our system is based on the principle of encoding type information corresponding to captured variables in the type of a spore. We prove our type system sound, implement our approach for Scala, evaluate its practicality through an small empirical study, and show the power of these guarantees through a case analysis of real-world distributed and concurrent frameworks that this safe foundation for migratable closures facilitates. In this report, we present the detailed soundness proofs of spores
Parallelizing Machine Learning- Functionally: A Framework and Abstractions for Parallel Graph Processing
Implementing machine learning algorithms for large data, such as the Web graph and social networks, is challenging. Even though much research has focused on making sequential algorithms more scalable, their running times continue to be prohibitively long. Meanwhile, parallelization remains a formidable challenge for this class of problems, despite frameworks like MapReduce which hide much of the associated complexity. We present a framework for implementing parallel and distributed machine learning algorithms on large graphs, flexibly, through the use of functional programming abstractions. Our aim is a system that allows researchers and practitioners to quickly and easily implement (and experiment with) their algorithms in a parallel or distributed setting. We introduce functional combinators for the flexible composition of parallel, aggregation, and sequential steps. To the best of our knowledge, our system is the first to avoid inversion of control in a (bulk) synchronous parallel model
- …